# -*- coding: utf-8 -*-

# @author Anderson R. Livramento
# Copyright (C) 2008 Anderson Rodrigues Livramento <anderdevel@users.sourceforge.net>
#
# O conteúdo deste arquivo está disponível dentro dos termos 
# da Licença Pública Geral GNU como publicada pela 
# Fundação do Software Livre (FSF); na versão 2 da Licença, ou
# (na sua opnião) qualquer versão mais recente.
#
# Este programa é distribuído na esperança que possa ser útil,
# mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a
# qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
# Licença Pública Geral GNU para maiores detalhes.
#
# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob
# o título "LICENCA.txt", junto com este programa; se não, escreva para
# a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
# Boston, MA  02110-1301  US
#
import logging
import formencode

import votafam.model.votafammodel as dao
import votafam.lib.objectutils as objectutils

from votafam.lib.base import *

log = logging.getLogger(__name__)

class MostrasController(BaseController):

    def index(self):
        c.form_result = model.new_from(model.get_model('Mostra').table)
        c.list = dao.Mostra.query.all()
        return render('/admin/mostras.mako')
    
    def save(self,id):
        schema = model.forms.MostraForm()
        try:
            form_result = schema.to_python(request.params)
            req_mostra = None
            if id:
                req_mostra = dao.Mostra.query.filter_by(cdmostra=id).first()
                if req_mostra:
                    objectutils.copy_dict(form_result,req_mostra)
            else:
                req_mostra = form_result
            mostra = model.save_or_update(req_mostra,dao.Mostra)
            c.alert_message = '&quot;%s&quot; foi salvo com sucesso' %mostra.nmmostra            
        except formencode.Invalid, e:
            c.form_result = e.value
            c.form_errors = model.forms.get_errors(e.error_dict,schema)
            c.alert_message = 'Campos com problemas:'
        return self.index()
    
    def edit(self,id):
        if id:
            c.form_result = objectutils.object_to_dict(dao.Mostra.query.filter_by(cdmostra=id).first())
            c.list = dao.Mostra.query.all()
            return render('/admin/mostras.mako')
        else:
            return self.index()
    
    def delete(self,id):
        if id:
            to_delete = dao.Mostra.query.filter_by(cdmostra=id).first()
            if to_delete:
                model.Session.delete(to_delete)
                model.Session.commit()
                c.alert_message = 'Mostra exclu&iacute;da!!'
        return self.index()